package net.java.action.comun;

import java.sql.Timestamp;
import java.util.Date;
import java.util.Map;

import org.apache.log4j.Logger;
import org.apache.struts2.convention.annotation.ParentPackage;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.inject.Scope;
import com.opensymphony.xwork2.inject.Scoped;

import dawi.fcs.dominio.generico.GenericoBean;
import dawi.fcs.dominio.seguridad.Usuario;
import dawi.fcs.servicio.seguridad.servicio.AccionesServicio;
import dawi.fcs.servicio.seguridad.servicio.PerfilServicio;
import dawi.fcs.servicio.seguridad.servicio.UsuarioServicio;
import dawi.fcs.servicio.seguridad.servicio.impl.AccionesServicioImpl;
import dawi.fcs.servicio.seguridad.servicio.impl.PerfilServicioImpl;
import dawi.fcs.servicio.seguridad.servicio.impl.UsuarioServicioImpl;
import dawi.fcs.servicio.servicio.ActividadServicio;
import dawi.fcs.servicio.servicio.ClienteServicio;
import dawi.fcs.servicio.servicio.ComprobantePagoDetalleServicio;
import dawi.fcs.servicio.servicio.ComprobantePagoServicio;
import dawi.fcs.servicio.servicio.DistritoServicio;
import dawi.fcs.servicio.servicio.DocumentoServicio;
import dawi.fcs.servicio.servicio.ExpedienteActividadDocumentoServicio;
import dawi.fcs.servicio.servicio.ExpedienteActividadServicio;
import dawi.fcs.servicio.servicio.ExpedienteParteServicio;
import dawi.fcs.servicio.servicio.ExpedienteServicio;
import dawi.fcs.servicio.servicio.MiscelaneosServicio;
import dawi.fcs.servicio.servicio.ProcesoActividadServicio;
import dawi.fcs.servicio.servicio.ProcesoServicio;
import dawi.fcs.servicio.servicio.impl.ActividadServicioImpl;
import dawi.fcs.servicio.servicio.impl.ClienteServicioImpl;
import dawi.fcs.servicio.servicio.impl.ComprobantePagoDetalleServicioImpl;
import dawi.fcs.servicio.servicio.impl.ComprobantePagoServicioImpl;
import dawi.fcs.servicio.servicio.impl.DistritoServicioImpl;
import dawi.fcs.servicio.servicio.impl.DocumentoServicioImpl;
import dawi.fcs.servicio.servicio.impl.ExpedienteActividadDocumentoServicioImpl;
import dawi.fcs.servicio.servicio.impl.ExpedienteActividadServicioImpl;
import dawi.fcs.servicio.servicio.impl.ExpedienteParteServicioImpl;
import dawi.fcs.servicio.servicio.impl.ExpedienteServicioimpl;
import dawi.fcs.servicio.servicio.impl.MiscelaneosServicioImpl;
import dawi.fcs.servicio.servicio.impl.ProcesoActividadServicioImpl;
import dawi.fcs.servicio.servicio.impl.ProcesoServicioImpl;

@SuppressWarnings("serial")
@ParentPackage(value = "DAWI-FCS-WEB")
@Scoped(value = Scope.SESSION)
public class BaseAction extends ActionSupport {

	// Servicios
	private ActividadServicio actividadServicio;
	private ClienteServicio clienteServicio;
	private DistritoServicio distritoServicio;
	private ExpedienteActividadServicio expedienteActividadServicio;
	private ExpedienteParteServicio expedienteParteServicio;
	private ExpedienteServicio expedienteServicio;
	private MiscelaneosServicio miscelaneosServicio;
	private ProcesoActividadServicio procesoActividadServicio;
	private ProcesoServicio procesoServicio;
	private AccionesServicio accionesServicio;
	private PerfilServicio perfilServicio;
	private UsuarioServicio usuarioServicio;
	private ExpedienteActividadDocumentoServicio expedienteActividadDocumentoServicio;
	private DocumentoServicio documentoServicio;
	private ComprobantePagoServicio comprobantePagoServicio;
	private ComprobantePagoDetalleServicio comprobantePagoDetalleServicio;
	private static Map<String, Object> session;

	@SuppressWarnings("unused")
	private static final Logger logger = Logger.getLogger(BaseAction.class);

	private Usuario usuarioActual;
	private String modificacionUsuario;
	private String modificacionFecha;
	private String creacionUsuario;
	private String creacionFecha;

	public Object getAuditoriaNuevo(GenericoBean dominio) {
		this.usuarioActual = this.getUsuarioActual();
		Date fechaHoy = new Date();
		dominio.setCreacionFecha(new Timestamp(fechaHoy.getTime()).toString());
		dominio.setCreacionUsuario(this.usuarioActual.getUser());
		return dominio;
	}

	public Object getAuditoriaModificar(GenericoBean dominio) // para modificar
	{

		this.usuarioActual = this.getUsuarioActual();

		Date fechaHoy = new Date();
		dominio.setModificacionFecha(new Timestamp(fechaHoy.getTime())
				.toString());
		dominio.setModificacionUsuario(this.usuarioActual.getUser());

		return dominio;
	}

	public void setAuditoriaModificar(GenericoBean dominio) {
		if (dominio == null)
			return;
		creacionFecha = dominio.getCreacionFecha();
		creacionUsuario = dominio.getCreacionUsuario();

		modificacionFecha = dominio.getModificacionFecha();
		modificacionUsuario = dominio.getModificacionUsuario();
	}

	public void setAuditoriaNuevo() // inicializar
	{
		usuarioActual = getUsuarioActual();

		Date fechaHoy = new Date();
		creacionFecha = new Timestamp(fechaHoy.getTime()).toString();
		creacionUsuario = usuarioActual.getUser();

		modificacionFecha = null;
		modificacionUsuario = "";
	}

	public Usuario getUsuarioActual() {
		usuarioActual = (Usuario) getSession().get("USUARIO_ACTUAL");
		return usuarioActual;
	}

	public String getModificacionUsuario() {
		return modificacionUsuario;
	}

	public String getModificacionFecha() {
		return modificacionFecha;
	}

	public String getCreacionUsuario() {
		return creacionUsuario;
	}

	public String getCreacionFecha() {
		return creacionFecha;
	}

	public void setUsuarioActual(Usuario usuarioActual) {
		this.usuarioActual = usuarioActual;
	}

	public ActividadServicio getActividadServicio() {
		actividadServicio = new ActividadServicioImpl();
		return actividadServicio;
	}

	public ClienteServicio getClienteServicio() {
		clienteServicio = new ClienteServicioImpl();
		return clienteServicio;
	}

	public DistritoServicio getDistritoServicio() {
		distritoServicio = new DistritoServicioImpl();
		return distritoServicio;
	}

	public ExpedienteActividadServicio getExpedienteActividadServicio() {
		expedienteActividadServicio = new ExpedienteActividadServicioImpl();
		return expedienteActividadServicio;
	}

	public ExpedienteParteServicio getExpedienteParteServicio() {
		expedienteParteServicio = new ExpedienteParteServicioImpl();
		return expedienteParteServicio;
	}

	public ExpedienteServicio getExpedienteServicio() {
		expedienteServicio = new ExpedienteServicioimpl();
		return expedienteServicio;
	}

	public MiscelaneosServicio getMiscelaneosServicio() {
		miscelaneosServicio = new MiscelaneosServicioImpl();
		return miscelaneosServicio;
	}

	public ProcesoActividadServicio getProcesoActividadServicio() {
		procesoActividadServicio = new ProcesoActividadServicioImpl();
		return procesoActividadServicio;
	}

	public ProcesoServicio getProcesoServicio() {
		procesoServicio = new ProcesoServicioImpl();
		return procesoServicio;
	}

	public AccionesServicio getAccionesServicio() {
		accionesServicio = new AccionesServicioImpl();
		return accionesServicio;
	}

	public PerfilServicio getPerfilServicio() {
		perfilServicio = new PerfilServicioImpl();
		return perfilServicio;
	}

	public UsuarioServicio getUsuarioServicio() {
		usuarioServicio = new UsuarioServicioImpl();
		return usuarioServicio;
	}

	public ExpedienteActividadDocumentoServicio getExpedienteActividadDocumentoServicio() {
		expedienteActividadDocumentoServicio = new ExpedienteActividadDocumentoServicioImpl();
		return expedienteActividadDocumentoServicio;
	}

	public static Map<String, Object> getSession() {
		session = (Map<String, Object>) ActionContext.getContext().getSession();
		return session;
	}

	public DocumentoServicio getDocumentoServicio() {
		documentoServicio = new DocumentoServicioImpl();
		return documentoServicio;
	}

	public ComprobantePagoServicio getComprobantePagoServicio() {
		comprobantePagoServicio = new ComprobantePagoServicioImpl();
		return comprobantePagoServicio;
	}

	public ComprobantePagoDetalleServicio getComprobantePagoDetalleServicio() {
		comprobantePagoDetalleServicio = new ComprobantePagoDetalleServicioImpl();
		return comprobantePagoDetalleServicio;
	}

}
